<?php namespace Common\Model;
use Hdphp\Model\Model;
//分类操作模型
class Cate extends Model{
	//1.指定模型操作的表（固定写法）
	protected $table = 'category';
	//自动验证（固定写法）
	//array(字段名，验证方法，错误信息，验证条件，验证时间)
	protected $validate = array(
		array('cname','required','分类名称不能为空',3,3),
		array('csort','num:0,65535','分类排序必须为数字且是0-65535之间',3,3),
	);
	
	// 这个方法是自己定义的，以后想添加的时候直接调用这个方法就可以了
	public function addData(){
		// 调用add方法前，必须经过create，否则无法添加
		//create才会触发自动验证
		// create()和add()是框架里面的，组合写法
		if($this->create()){
			//调用框架里面的添加方法
			$this->add();
			return true;
		}
		//否则返回假
		return false;
	}
	
	//修改
	public function editData(){
		//如果不是真的话，就返回假
		if(!$this->create()) return false;
		
		$this->save();
		return true;
	}
	
	
	//获得除了自己和自己的所有的子级的分类
	public function getNoMy($cid){
		//获得所有子集分类的cid
		$cids = $this->getSon($this->get(), $cid);
		//把自己压进去
		$cids[] = $cid;
		//变成字符串形式 21,22,24,20
		$strCids = implode(',', $cids);
		//返回结果
		//返回除了自己和自己的所有的子级的分类
		return $this->where("cid NOT IN({$strCids})")->get();
	}
	
	
	//递归获得所有的子级的cid
	//$data 是分类的所有数据
	//$cid  是当前分类的cid
	public function getSon($data,$cid){
		$temp = array();
		foreach ($data as $v) {
			//找到了子集
			//如果一个分类里面的pid等于get过来的cid
			if($v['pid'] == $cid){
				//就把这个分类添加到数组里面
				$temp[] = $v['cid'];
				//合并数组
				//再次调用自己就是递归了
				$temp = array_merge($temp,$this->getSon($data, $v['cid']));
			}
		}
		//最后把这个数组反出去
		return $temp;
	}
	
}


 ?>